package org.edu.modules.stu.base.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.edu.common.base.BasePageDto;
import org.edu.common.dto.BaseCountDto;
import org.edu.modules.stu.base.dto.VeBaseStudentGraduationDto;
import org.edu.modules.stu.base.entity.VeBaseStudent;
import org.edu.modules.stu.base.dto.VeBaseStudentDto;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.edu.modules.stu.biye.dto.VeStuGraduationAuditInfoDto;

import java.util.List;

/**
 * dao-学生信息表
 */
@Mapper
public interface VeBaseStudentMapper extends BaseMapper<VeBaseStudent> {

    List<BaseCountDto> countDto(@Param("year") String year);


    /**
     * 查询DTO 的分页
     **/
    IPage<VeBaseStudentDto> pageDto(BasePageDto page, @Param(Constants.WRAPPER) Wrapper queryWrapper);

    //查毕业的学生
    IPage<VeStuGraduationAuditInfoDto> pageGraduationDto(BasePageDto page, @Param(Constants.WRAPPER) Wrapper queryWrapper);

    /**
     * 根据班级ids找学生 查询DTO 的分页
     **/
    IPage<VeBaseStudentDto> pageDtoByBanjinIds(BasePageDto page, @Param(Constants.WRAPPER) Wrapper queryWrapper, @Param("ids") String[] ids);

    /**
     * 根据班级ids找学生
     */
    List<VeBaseStudent> listByBanjinIds(@Param("ids") String[] ids);

    //查询在校生
    List<BaseCountDto> countStudentAtSchool(@Param("gradeId") String gradeId,
                                            @Param("falId") String falId,
                                            @Param("specId") String specId,
                                            @Param("bjId") String bjId);

    //历届毕业生统计
    List<BaseCountDto> graduateStatistics(@Param("falId") Integer falId, @Param("specId") Integer specId);

    /**
     * 根据班级ids找在校学生
     */
    List<VeBaseStudent> listGraduationByBanjinIds(@Param("ids") String[] ids);
}
